package protocol;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import structures.Operation;
import structures.Page;
import structures.Row;
import structures.Scheduler;
import structures.Table;
import structures.TransactionParser;

public class P2V2PL {

	public static void main(String[] args) {
		Scanner n = new Scanner(System.in);
		List<Object> database = new ArrayList<Object>();
		Table tabela1 = new Table();

		Page pagina1 = new Page(tabela1);
		Page pagina2 = new Page(tabela1);

		Row tuplaQ = new Row(pagina1);
		Row tuplaW = new Row(pagina1);
		Row tuplaE = new Row(pagina2);
		Row tuplaR = new Row(pagina2);
		Row tuplaT = new Row(pagina2);

		pagina1.addRow(tuplaQ);
		pagina1.addRow(tuplaW);
		pagina2.addRow(tuplaE);
		pagina2.addRow(tuplaR);
		pagina2.addRow(tuplaT);

		tabela1.addPage(pagina1);
		tabela1.addPage(pagina2);

		database.add(tabela1);

		Table tabela2 = new Table();

		Page paginaA = new Page(tabela2);
		Page paginaB = new Page(tabela2);

		Row tuplaA = new Row(paginaA);
		Row tuplaS = new Row(paginaA);
		Row tuplaD = new Row(paginaA);
		Row tuplaF = new Row(paginaA);
		Row tuplaG = new Row(paginaB);

		Row tuplaZ = new Row(paginaB);
		Row tuplaX = new Row(paginaB);
		Row tuplaC = new Row(paginaB);
		Row tuplaV = new Row(paginaB);
		Row tuplaB = new Row(paginaB);

		paginaA.addRow(tuplaA);
		paginaA.addRow(tuplaS);
		paginaA.addRow(tuplaD);
		paginaA.addRow(tuplaF);
		paginaB.addRow(tuplaG);

		paginaB.addRow(tuplaZ);
		paginaB.addRow(tuplaX);
		paginaB.addRow(tuplaC);
		paginaB.addRow(tuplaV);
		paginaB.addRow(tuplaB);

		tabela2.addPage(paginaA);
		tabela2.addPage(paginaB);
		
		database.add(tabela2);
		TransactionParser tp = new TransactionParser();
		Scheduler s = new Scheduler();
			System.out.println("Type TransactionID");
			Operation te = tp.parser(n.next(), tuplaA);
			s.receiveOperation(te);
			s.printLockTable();
			
			System.out.println("Type TransactionID");
			Operation tx = tp.parser(n.next(), tuplaG);
			s.receiveOperation(tx);
			s.printLockTable();
	}
}
